
package domain.Observer;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import domain.Produit;
import java.io.Serializable;
import java.util.List;
import java.sql.Timestamp;

/**
 *
 * @author Damador
 */
public class Seance implements SeanceObservable, Serializable{
    
    public static int ANNULE = 0;
    public static int PRE_OUVERTURE = 1;
    public static int EN_COURS = 2;
    public static int TERMINE = 3;
    public static int NON_VENDU = 4;
    
    private int id_seance;
    private double prix_depart;
    private double reserve;
    private Timestamp date_ouverture;
    private Timestamp date_fermeture;
    private int etat;
    private List<I_Observer> observerCollection;
    private Produit produit;
    private int id_vendeur;


    public Seance() {
    }

    public Seance(int id_seance, double prix_depart, double reserve, Timestamp date_ouverture, Timestamp date_fermeture, int etat, List<I_Observer> observerCollection, Produit produit, int id_vendeur) {
        this.id_seance = id_seance;
        this.prix_depart = prix_depart;
        this.reserve = reserve;
        this.date_ouverture = date_ouverture;
        this.date_fermeture = date_fermeture;
        this.etat = etat;
        this.observerCollection = observerCollection;
        this.produit = produit;
        this.id_vendeur = id_vendeur;
    }
    
    public Timestamp getDate_fermeture() {
        return date_fermeture;
    }

    public void setDate_fermeture(Timestamp date_fermeture) {
        this.date_fermeture = date_fermeture;
    }

    public Timestamp getDate_ouverture() {
        return date_ouverture;
    }

    public void setDate_ouverture(Timestamp date_ouverture) {
        this.date_ouverture = date_ouverture;
    }

    public int getEtat() {
        return etat;
    }

    public void setEtat(int etat) {
        this.etat = etat;
    }

    public int getId_seance() {
        return id_seance;
    }

    public void setId_seance(int id_seance) {
        this.id_seance = id_seance;
    }

    public List<I_Observer> getObserverCOllection() {
        return observerCollection;
    }

    public void setObserverCollection(List<I_Observer> observerCOllection) {
        this.observerCollection = observerCOllection;
    }

    public double getPrix_depart() {
        return prix_depart;
    }

    public void setPrix_depart(double prix_depart) {
        this.prix_depart = prix_depart;
    }

    public double getReserve() {
        return reserve;
    }

    public void setReserve(double reserve) {
        this.reserve = reserve;
    }

    public Produit getProduit() {
        return produit;
    }

    public void setProduit(Produit produit) {
        this.produit = produit;
    }
    
    

    @Override
    public void addObserver(I_Observer o) {
        observerCollection.add(o);
    }

    @Override
    public void removeObserver(I_Observer o) {
        observerCollection.remove(o);
    }
    
    
    public int getId_vendeur() {
        return id_vendeur;
    }

    public void setId_vendeur(int id_vendeur) {
        this.id_vendeur = id_vendeur;
    }

    @Override
    public void notifyObserver() {
        for(int i = 0;i < observerCollection.size(); i++) {
            observerCollection.get(i).notifyUtilisateur(this);
        }
    }
    
    @Override
    public String toString(){
        String res;
        res = "------- Seance ----------------- \n";
        res += "titre: " + produit.getTitre() + "\n";
        res += "Desc: " + produit.getDescription() + "\n";
        res += "Cat: " + produit.getCategorie().getNom() + "\n";
        res += "Prix de départ: " + prix_depart + "\n";
        res += "Prix de réserve: " + reserve + "\n";
        res += "Date d'ouverture: " + date_ouverture + "\n";
        res += "Date de fermeture: " + date_fermeture + "\n";
        res += "Etat: " + etat + "\n";
        res += "-------------------------------- \n";
        return res;
    }
    
}